RDD 常用的 Function 如下

  • first() - 取得 RDD 裡頭的第一個元素
  • count() - 計算 RDD 裡頭元素的個數 [延伸function:countByKey(), countByValue()]
  • map(func) - 對 RDD 的裡頭的元素進行處理動作
  • reduce(func) - 對 RDD 的裡頭的所有的元素作合作的動作
  • mapValues (func) - 排除 Key,只對 RDD 的裡頭的元素進行處理動作
  • reduceByKey(func) - 將相同的 Key 裡頭的 Values 給予合併起來
  • groupByKey() - 把相同 Key 值的 Values 串成一個list,可對其進行python list的運算
  • filter(func) - 根據 condition 判斷是否需要保留
  • collect() - 實際執行 Spark 指令並將 RDD 整理為 Python 的 List 資料形式

Official Docuent


In [1]:
# Create a RDD with 1 ~ 10
rdd_1_10 = sc.parallelize([1,2,3,4,5,6,7,8,9,10])

In [2]:
print 'First:',rdd_1_10.first()
print 'Have:',rdd_1_10.count(),'Items'


First: 1
Have: 10 Items

In [3]:
#Multiply with 2
rdd_1_10.map(lambda x : x *2).collect()


Out[3]:
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

In [4]:
# sum of all
rdd_1_10.reduce(lambda x,y : x+ y )


Out[4]:
55

In [5]:
# use reduce by key
rdd = sc.parallelize([("a", 1), ("b", 1), ("a", 1)])
rdd.reduceByKey(lambda x,y : x+y ).collect()


Out[5]:
[('a', 2), ('b', 1)]

請修改??,並過濾出大於5,且算出所有裡元素的乘積


In [6]:
rdd_over_5 = rdd_1_10.filter(lambda x : x > 5)
print rdd_over_5.collect()
value = rdd_over_5.reduce(lambda x,y:x*y)
print value
if value == 30240 : print "恭喜你答對了"


[6, 7, 8, 9, 10]
30240
恭喜你答對了

In [ ]: